﻿using RayDen.Library.Core.Primitives;
using RayDen.RayEngine.Core.Surface;
using RayDen.RayEngine.Core.Types;

namespace RayDen.RayEngine.Core.Interface
{
    public interface ITriangleMesh
    {
        string MeshName { get; }
        string MaterialName { get; }
        int MaterialID { get; set; }
        bool TriangleInRange(int triIndex, int delta = 0);
        void InterpolateTriUV(int currentTriangleIndex, float b1, float b2, out UV texCoord);
        void InterpolateTriangleNormal(int currentTriangleIndex, float b1, float b2, ref Normal Normal);
        int TrianglesCount { get; }
        int StartTriangle { get; set; }
        int EndTriangle { get; set; }
        bool HasNormals { get; }
        bool HasTexCoords { get; }

        GeometryProfile MeshProfile { get; set; }

        RayEngineMaterial Material { get; set; }
    }
}